home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / cdbmang.exe / DBMGR.H < prev    next >
Text File  |  1991-05-20  |  14KB  |  304 lines

  1. /*
  2.  *  dbmgr.h
  3.  *
  4.  *  This file contains structures, macros and #defines for
  5.  *  the database layout.
  6.  *
  7.  *  Copyright (C) 1989, 1990, 1991 by Daytris.  All rights reserved.
  8.  */
  9.  
  10. typedef char            CHAR;
  11. typedef unsigned char   UCHAR;
  12. typedef short           INT;
  13. typedef unsigned short  UINT;
  14. typedef long            LONG;
  15. typedef unsigned long   ULONG;
  16.  
  17. INT DbClose( void);
  18. INT DbFlush( void);
  19. INT DbOpen( CHAR *pDbDir, CHAR *pDbName);
  20. INT DbRecordAdd( CHAR *pRecName, void *pData);
  21. INT DbRecordDelete( CHAR *pRecName);
  22. INT DbRecordFindByKey( CHAR *pRecName, CHAR *pFldName, void *pKey);
  23. INT DbRecordFindFirst( CHAR *pRecName, CHAR *pFldName);
  24. INT DbRecordFindLast( CHAR *pRecName, CHAR *pFldName);
  25. INT DbRecordFindNext( CHAR *pRecName, CHAR *pFldName);
  26. INT DbRecordFindPrev( CHAR *pRecName, CHAR *pFldName);
  27. INT DbRecordGetByKey( CHAR *pRecName, CHAR *pFldName, void *pTarget, void *pKey);
  28. INT DbRecordGetCurrency( CHAR *pRecName, void *pTarget);
  29. INT DbRecordGetCurrent( CHAR *pRecName, void *pTarget);
  30. INT DbRecordGetFirst( CHAR *pRecName, CHAR *pFldName, void *pTarget);
  31. INT DbRecordGetLast( CHAR *pRecName, CHAR *pFldName, void *pTarget);
  32. INT DbRecordGetNext( CHAR *pRecName, CHAR *pFldName, void *pTarget);
  33. INT DbRecordGetPrev( CHAR *pRecName, CHAR *pFldName, void *pTarget);
  34. INT DbRecordUpdate( CHAR *pRecName, void *pData);
  35. INT DbRecordUpdCurrency( CHAR *pRecName, void *pData);
  36. INT DbSetAdd( CHAR *pOwnerName, CHAR *pMemberName);
  37. INT DbSetDelete( CHAR *pOwnerName, CHAR *pMemberName);
  38. INT DbSetFindFirst( CHAR *pOwnerName, CHAR *pMemberName);
  39. INT DbSetFindLast( CHAR *pOwnerName, CHAR *pMemberName);
  40. INT DbSetFindNext( CHAR *pOwnerName, CHAR *pMemberName);
  41. INT DbSetFindPrev( CHAR *pOwnerName, CHAR *pMemberName);
  42. INT DbSetGetFirst( CHAR *pOwnerName, CHAR *pMemberName, void *pTarget);
  43. INT DbSetGetLast( CHAR *pOwnerName, CHAR *pMemberName, void *pTarget);
  44. INT DbSetGetNext( CHAR *pOwnerName, CHAR *pMemberName, void *pTarget);
  45. INT DbSetGetOwner( CHAR *pOwnerName, CHAR *pMemberName, void *pTarget);
  46. INT DbSetGetPrev( CHAR *pOwnerName, CHAR *pMemberName, void *pTarget);
  47.  
  48. INT cdb( INT, ...);
  49.  
  50. #define NBRHANDLES      12      /* Maximum number of file handles       */
  51. #define MAXKEY          8       /* Maximum # of keys per key record     */
  52. #define KEYPAGESIZE     512     /* Key page buffer size                 */
  53. #define NBRPAGES        16      /* Number of key page buffers           */
  54. #define DATAPAGESIZE    2048    /* Data page buffer size                */
  55. #define DATASLOTSIZE    1024    /* Data file slot buffer size           */
  56.  
  57. /* Testdrive version defines */
  58. #define TESTDRIVE_MAX_RECORDS   50L
  59.  
  60. /* Field index structure defines */
  61. #define KEY_FIELD       0x01
  62. #define SET_KEY_FIELD   0x01
  63.  
  64. /* Handle index structure defines */
  65. #define FILE_MODIFIED   0x01
  66.  
  67. /* Key file index structure defines */
  68. #define PAGE_FULL       0x01
  69.  
  70. /* Page index structure defines */
  71. #define PAGE_DIRTY      0x01
  72.  
  73. /* Error defines */
  74. #define E_TESTDRIVE     -3
  75. #define E_INVALIDCASE   -2
  76. #define E_DOS           -1
  77. #define E_NORECNAME     1
  78. #define E_NOFLDNAME     2
  79. #define E_INVALIDSET    3
  80. #define E_NOTAKEY       4
  81. #define E_NOTFOUND      5
  82. #define E_NEXTGUESS     6
  83. #define E_NOCURRENT     7
  84. #define E_NONEXT        8
  85. #define E_NOPREV        9
  86. #define E_NOMEMBER      10
  87. #define E_NOOWNER       11
  88.  
  89. /* DBC call defines */
  90. #define D_OPEN                  0
  91. #define D_CLOSE                 1
  92. #define D_FLUSH                 2
  93. #define D_GET_CURRENCY          3
  94. #define D_UPDATE_CURRENCY       4
  95. #define D_FIND_FIRST_RECORD     5
  96. #define D_FIND_LAST_RECORD      6
  97. #define D_FIND_NEXT_RECORD      7
  98. #define D_FIND_PREV_RECORD      8
  99. #define D_FIND_RECORD_BY_KEY    9
  100. #define D_GET_FIRST_RECORD      10
  101. #define D_GET_LAST_RECORD       11
  102. #define D_GET_NEXT_RECORD       12
  103. #define D_GET_PREV_RECORD       13
  104. #define D_GET_RECORD_BY_KEY     14
  105. #define D_GET_CURRENT_RECORD    15
  106. #define D_ADD_RECORD            16
  107. #define D_UPDATE_RECORD         17
  108. #define D_DELETE_RECORD         18
  109. #define D_FIND_FIRST_SET        19
  110. #define D_FIND_LAST_SET         20
  111. #define D_FIND_NEXT_SET         21
  112. #define D_FIND_PREV_SET         22
  113. #define D_GET_FIRST_SET         23
  114. #define D_GET_LAST_SET          24
  115. #define D_GET_NEXT_SET          25
  116. #define D_GET_PREV_SET          26
  117. #define D_GET_SET_OWNER         27
  118. #define D_ADD_SET               28
  119. #define D_DELETE_SET            29
  120.  
  121. #if 0
  122. /* DataBase Macros */
  123. #define DbOpen(a)                       cdb(D_OPEN, a)
  124. #define DbClose()                       cdb(D_CLOSE)
  125. #define DbFlush()                       cdb(D_FLUSH)
  126. #define DbRecordGetCurrency(a,b)        cdb(D_GET_CURRENCY,a,b)
  127. #define DbRecordUpdCurrency(a,b)        cdb(D_UPDATE_CURRENCY,a,b)
  128. #define DbRecordFindFirst(a,b)          cdb(D_FIND_FIRST_RECORD,a,b)
  129. #define DbRecordFindLast(a,b)           cdb(D_FIND_LAST_RECORD,a,b)
  130. #define DbRecordFindNext(a,b)           cdb(D_FIND_NEXT_RECORD,a,b)
  131. #define DbRecordFindPrev(a,b)           cdb(D_FIND_PREV_RECORD,a,b)
  132. #define DbRecordFindByKey(a,b,c)        cdb(D_FIND_RECORD_BY_KEY,a,b,c)
  133. #define DbRecordGetFirst(a,b,c)         cdb(D_GET_FIRST_RECORD,a,b,c)
  134. #define DbRecordGetLast(a,b,c)          cdb(D_GET_LAST_RECORD,a,b,c)
  135. #define DbRecordGetNext(a,b,c)          cdb(D_GET_NEXT_RECORD,a,b,c)
  136. #define DbRecordGetPrev(a,b,c)          cdb(D_GET_PREV_RECORD,a,b,c)
  137. #define DbRecordGetByKey(a,b,c,d)       cdb(D_GET_RECORD_BY_KEY,a,b,c,d)
  138. #define DbRecordGetCurrent(a,b,c)       cdb(D_GET_CURRENT_RECORD,a,b,c)
  139. #define DbRecordAdd(a,b)                cdb(D_ADD_RECORD,a,b)
  140. #define DbRecordUpdate(a,b)             cdb(D_UPDATE_RECORD,a,b)
  141. #define DbRecordDelete(a)               cdb(D_DELETE_RECORD,a)
  142. #define DbSetFindFirst(a,b)             cdb(D_FIND_FIRST_SET,a,b)
  143. #define DbSetFindLast(a,b)              cdb(D_FIND_LAST_SET,a,b)
  144. #define DbSetFindNext(a,b)              cdb(D_FIND_NEXT_SET,a,b)
  145. #define DbSetFindPrev(a,b)              cdb(D_FIND_PREV_SET,a,b)
  146. #define DbSetGetFirst(a,b,c)            cdb(D_GET_FIRST_SET,a,b,c)
  147. #define DbSetGetLast(a,b,c)             cdb(D_GET_LAST_SET,a,b,c)
  148. #define DbSetGetNext(a,b,c)             cdb(D_GET_NEXT_SET,a,b,c)
  149. #define DbSetGetPrev(a,b,c)             cdb(D_GET_PREV_SET,a,b,c)
  150. #define DbSetGetOwner(a,b,c)            cdb(D_GET_SET_OWNER,a,b,c)
  151. #define DbSetAdd(a,b)                   cdb(D_ADD_SET,a,b)
  152. #define DbSetDelete(a,b)                cdb(D_DELETE_SET,a,b)
  153. #endif
  154.  
  155.  
  156. /* DataBase structures and unions */
  157. union  type
  158.     {
  159.     CHAR                charval;
  160.     INT                 intval;
  161.     LONG                longval;
  162.     float               floatval;
  163.     double              doubleval;
  164.     CHAR                *ptrval;
  165.     UCHAR               ucharval;
  166.     UINT                uintval;
  167.     ULONG               ulongval;
  168.     };
  169.  
  170. struct dbheader                         /* 128 bytes                    */
  171.     {               
  172.     CHAR                title[96];      /* DBD title                    */
  173.     UINT                totrecs;        /* Total number of records      */
  174.     UINT                totowns;        /* Total number of owners       */
  175.     UINT                totmems;        /* Total number of members      */
  176.     UINT                totflds;        /* Total number of fields       */
  177.     CHAR                prefix[6];      /* File prefix description      */
  178.     CHAR                filler[18];
  179.     };
  180.  
  181. struct record_index                     /* 46 bytes                     */
  182.     {
  183.     UINT                firstown;       /* First owner                  */
  184.     UINT                nbrowns;        /* Number of owners             */
  185.     UINT                firstmem;       /* First member                 */
  186.     UINT                nbrmems;        /* Number of members            */
  187.     UINT                firstfld;       /* First field                  */
  188.     UINT                nbrflds;        /* Number of fields             */
  189.     UINT                reclen;         /* Record length                */
  190.     CHAR                recname[32];    /* Record name